#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import re

def update_customer_detail():
    file_path = 'frontend/src/views/crm/components/CustomerDetailNew.vue'

    # 读取文件
    with open(file_path, 'r', encoding='utf-8') as f:
        content = f.read()

    # 1. 修改客户来源字段，从显示ID改为显示文字
    content = re.sub(
        r'<el-descriptions-item label="客户来源">\{\{ detail\.source \|\| \'-\' \}\}</el-descriptions-item>',
        '<el-descriptions-item label="客户来源">{{ getSourceText(detail.source) || \'-\' }}</el-descriptions-item>',
        content
    )

    # 2. 在所属部门后插入新字段
    dept_pattern = r'(<el-descriptions-item label="所属部门">\{\{ detail\.dept_name \|\| \'-\' \}\}</el-descriptions-item>)'
    new_fields = r'''\1
              <el-descriptions-item label="客户等级">{{ getLevelText(detail.level) || '-' }}</el-descriptions-item>
              <el-descriptions-item label="重要程度">{{ getImportantLevelText(detail.important_level) || '-' }}</el-descriptions-item>
              <el-descriptions-item label="证件类型">{{ getIdTypeText(detail.id_type) || '-' }}</el-descriptions-item>
              <el-descriptions-item label="证件号码">{{ detail.id_number || '-' }}</el-descriptions-item>
              <el-descriptions-item label="客户属性">{{ getCustomerAttributeText(detail.customer_attribute) || '-' }}</el-descriptions-item>
              <el-descriptions-item label="联系人">{{ detail.contact_name || '-' }}</el-descriptions-item>
              <el-descriptions-item label="联系人电话">{{ detail.contact_phone || '-' }}</el-descriptions-item>
              <el-descriptions-item label="合作时间">{{ formatTime(detail.cooperation_time) }}</el-descriptions-item>
              <el-descriptions-item label="创建时间">{{ formatTime(detail.create_time) }}</el-descriptions-item>
              <el-descriptions-item label="更新时间">{{ formatTime(detail.update_time) }}</el-descriptions-item>'''

    content = re.sub(dept_pattern, new_fields, content)

    # 3. 添加邮箱字段（在联系电话之后）
    phone_pattern = r'(<el-descriptions-item label="联系电话">\{\{ detail\.phone \|\| \'-\' \}\}</el-descriptions-item>)'
    content = re.sub(phone_pattern, r'''\1
              <el-descriptions-item label="邮箱">{{ detail.email || '-' }}</el-descriptions-item>''', content)

    # 4. 修改客户状态字段布局（去掉:span="2"）
    content = re.sub(
        r'<el-descriptions-item label="客户状态" :span="2">',
        '<el-descriptions-item label="客户状态">',
        content
    )

    # 5. 更新getIndustryText方法，扩展行业映射
    industry_method = r'''// 获取行业类型
const getIndustryText = (industry: string) => {
  if (!industry) return '-'
  const map: Record<string, string> = {
    '1': '科技互联网',
    '2': '环保科技',
    '3': '物流运输',
    '4': '教育培训',
    '5': '文化传媒',
    '6': '房地产建筑',
    '7': '制造业',
    '8': '金融保险',
    '9': '医疗健康',
    '10': '餐饮服务',
    '11': '汽车服务',
    '12': '农业',
    '13': '能源',
    '14': '通信',
    '15': '零售',
    '16': '咨询服务',
    '17': '电商零售'
  }
  return map[industry] || industry
}'''
    content = re.sub(
        r'// 获取行业类型\nconst getIndustryText = \(industry: string\) => \{[^}]+\}',
        industry_method,
        content,
        flags=re.DOTALL
    )

    # 6. 在getIndustryText方法后添加新方法
    new_methods = '''// 获取行业类型
const getIndustryText = (industry: string) => {
  if (!industry) return '-'
  const map: Record<string, string> = {
    '1': '科技互联网',
    '2': '环保科技',
    '3': '物流运输',
    '4': '教育培训',
    '5': '文化传媒',
    '6': '房地产建筑',
    '7': '制造业',
    '8': '金融保险',
    '9': '医疗健康',
    '10': '餐饮服务',
    '11': '汽车服务',
    '12': '农业',
    '13': '能源',
    '14': '通信',
    '15': '零售',
    '16': '咨询服务',
    '17': '电商零售'
  }
  return map[industry] || industry
}

// 获取客户来源
const getSourceText = (source: string) => {
  if (!source) return '-'
  const map: Record<string, string> = {
    '1': '网络搜索',
    '2': '客户介绍',
    '3': '电话营销',
    '4': '邮件营销',
    '5': '社交媒体',
    '6': '线下活动',
    '7': '合作伙伴',
    '8': '广告投放',
    '9': '展会',
    '10': '主动咨询',
    '11': '其他'
  }
  return map[source] || source
}

// 获取重要程度
const getImportantLevelText = (level: number) => {
  const map: Record<number, string> = { 1: '普通', 2: '重要', 3: '关键' }
  return map[level] || '-'
}

// 获取证件类型
const getIdTypeText = (type: number) => {
  const map: Record<number, string> = { 1: '身份证', 2: '统一社会信用代码', 3: '营业执照号' }
  return map[type] || '-'
}

// 获取客户属性
const getCustomerAttributeText = (attribute: number) => {
  const map: Record<number, string> = { 1: '普通', 2: '合作', 3: '会员' }
  return map[attribute] || '-'
}'''

    # 只替换getIndustryText方法，不添加其他方法
    content = re.sub(
        r'// 获取行业类型\nconst getIndustryText = \(industry: string\) => \{[^}]+\}',
        industry_method,
        content,
        flags=re.DOTALL
    )

    # 在getScaleText方法前添加新方法
    scale_pattern = r'(\n// 获取企业规模)'
    new_methods_addition = '''

// 获取客户来源
const getSourceText = (source: string) => {
  if (!source) return '-'
  const map: Record<string, string> = {
    '1': '网络搜索',
    '2': '客户介绍',
    '3': '电话营销',
    '4': '邮件营销',
    '5': '社交媒体',
    '6': '线下活动',
    '7': '合作伙伴',
    '8': '广告投放',
    '9': '展会',
    '10': '主动咨询',
    '11': '其他'
  }
  return map[source] || source
}

// 获取重要程度
const getImportantLevelText = (level: number) => {
  const map: Record<number, string> = { 1: '普通', 2: '重要', 3: '关键' }
  return map[level] || '-'
}

// 获取证件类型
const getIdTypeText = (type: number) => {
  const map: Record<number, string> = { 1: '身份证', 2: '统一社会信用代码', 3: '营业执照号' }
  return map[type] || '-'
}

// 获取客户属性
const getCustomerAttributeText = (attribute: number) => {
  const map: Record<number, string> = { 1: '普通', 2: '合作', 3: '会员' }
  return map[attribute] || '-'
}'''
    content = re.sub(scale_pattern, new_methods_addition + r'\1', content)

    # 写入文件
    with open(file_path, 'w', encoding='utf-8') as f:
        f.write(content)

    print("✅ 客户详情页面字段补充完成！")

if __name__ == '__main__':
    update_customer_detail()
